package com.yugong.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;
import com.yugong.entity.dto.OrderClassAdmin;
import com.yugong.entity.vo.request.OrderClassAdminRequestVO;
import com.yugong.entity.vo.request.StudentRequestVO;
import com.yugong.entity.vo.response.CourseScoreListResponseVO;
import com.yugong.entity.vo.response.OrderClassAdminListResponseVO;
import com.yugong.entity.vo.response.StudentListResponseVO;

/**
 * 订单班管理员业务逻辑接口
 *
 * @author yugong
 * @date 2024/2/18
 */
public interface OrderClassAdminService extends IService<OrderClassAdmin> {
    /**
     * 根据姓名查询订单班管理员
     *
     * @param pageNum             当前页
     * @param pageSize            当前页数据总个数
     * @param orderClassAdminName 姓名
     * @return 订单班管理员
     */
    PageInfo<OrderClassAdminListResponseVO> findOrderClassAdmin(Integer pageNum, Integer pageSize, String orderClassAdminName);

    /**
     * 删除订单班管理员
     *
     * @param orderClassAdminNo 工号
     * @return 数据库影响行数
     */
    int deleteOrderClass(String orderClassAdminNo);

    /**
     * 查询订单班管理员个人信息
     *
     * @param orderClassAdminNo 工号
     * @return 订单班管理员个人信息
     */
    OrderClassAdminListResponseVO orderClassAdminInfo(String orderClassAdminNo);

    /**
     * 修改个人信息
     *
     * @param orderClassAdminRequestVO 订单班管理员请求实体类
     * @return 数据库影响行数
     */
    int updateInfo(OrderClassAdminRequestVO orderClassAdminRequestVO);

    /**
     * 修改订单班管理员
     *
     * @param orderClassAdminRequestVO 订单班管理员请求实体类
     * @return 数据库影响行数
     */
    int updateOrderClassAdmin(OrderClassAdminRequestVO orderClassAdminRequestVO);

    /**
     * 查看学生信息
     *
     * @param pageNum           当前页
     * @param pageSize          当前页总数
     * @param studentName       姓名
     * @param orderClassAdminNo 工号
     * @return 学生信息
     */
    PageInfo<StudentListResponseVO> findStudent(Integer pageNum, Integer pageSize, String studentName, String orderClassAdminNo);

    /**
     * 评价学生
     *
     * @param studentRequestVO 学生请求实体类
     * @return 数据库影响行数
     */
    int evaluateStudent(StudentRequestVO studentRequestVO);

    /**
     * 查看成绩
     *
     * @param pageNum           当前页
     * @param pageSize          当前页个数
     * @param studentName       姓名
     * @param orderClassAdminNo 工号
     * @return 成绩
     */
    PageInfo<CourseScoreListResponseVO> findScore(Integer pageNum, Integer pageSize, String studentName, String orderClassAdminNo);
}
